package com.ocss.message.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * WebScoket配置处理器
 */
@Configuration
public class WebSocketConfig {
	 /**
     * ServerEndpointExporter 作用
     *
     * 这个Bean会自动注册使用@ServerEndpoint注解声明的websocket endpoint
     *
     * @return
     */
//	@Bean
//    public ServerEndpointExporter serverEndpointExporter() {
//        return new ServerEndpointExporter();
//    }
     @Bean
     public CorsFilter corsFilter(){

         // 初始化cors配置对象
         CorsConfiguration configuration = new CorsConfiguration();

         // 设置允许跨域的域名,如果允许携带cookie的话,路径就不能写*号, *表示所有的域名都可以跨域访问
         configuration.addAllowedOrigin("*");
         // 设置跨域访问可以携带cookie
         configuration.setAllowCredentials(false);
         // 允许所有的请求方法 ==> GET POST PUT Delete
         configuration.addAllowedMethod("*");
         // 允许携带任何头信息
         configuration.addAllowedHeader("*");

         // 初始化cors配置源对象
         UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();

         // 给配置源对象设置过滤的参数
         // 参数一: 过滤的路径 == > 所有的路径都要求校验是否跨域
         // 参数二: 配置类
         configurationSource.registerCorsConfiguration("/**", configuration);

         // 返回配置好的过滤器
         return new CorsFilter(configurationSource);
     }
}
